Telegram Group & Telegram Channel
👣 Что выйдет код ?

go 
package main

import "fmt"

// Пара обобщённого типа
type Pair[T any, U any] struct {
First T
Second U
}

// Метод, меняющий местами элементы
func (p Pair[T, U]) Swap() Pair[U, T] {
return Pair[U, T]{First: p.Second, Second: p.First}
}

// Карта обобщённого типа
type Mapping[K comparable, V any] map[K]V

func main() {
// явно указываем T=int, U=string
p1 := Pair[int, string]{First: 1, Second: "one"}

// начиная с Go 1.21 можно вывести параметры типа из литерала!
// здесь компилятор сам понимает, что T=string, U=int
p2 := Pair{"two", 2}

// аналогично для обобщённого alias-типа map
m := Mapping{"beta": 2}

// откатываем пару p2
swapped := p2.Swap()

fmt.Printf("%T %v\n", p2, p2)
fmt.Printf("%T %v\n", swapped, swapped)
fmt.Printf("%T %v\n", m, m)
}




Ответ: Код на Go 1.24 выведет следующее:

`main.Pair string int {two 2}`
`main.Pair int string {2 two}`
`main.Mapping string int map["beta":2]`

**Объяснение:**

1. **`p1 := Pairint, string{First: 1, Second: "one"}`** и **`p2 := Pair{"two", 2}`**:
* Создаются две переменные типа `Pair`.
* Для `p1` типы `T` (int) и `U` (string) указываются явно.
* Для `p2`, начиная с Go 1.21, компилятор автоматически выводит типы `T` (string) и `U` (int) из значений литерала `{"two", 2}`.

2. **`m := Mapping{"beta": 2}`**:
* Создается переменная `m` типа `Mapping`. `Mapping` является псевдонимом для `mapstringint`. Компилятор выводит типы ключа (string) и значения (int) из литерала `{"beta": 2}`.

3. **`swapped := p2.Swap()`**:
* Вызывается метод `Swap()` для `p2`. Метод `Swap()` возвращает новую структуру `Pair`, в которой типы `U` и `T` поменяны местами, а также значения полей `First` и `Second`. Таким образом, `swapped` будет иметь тип `Pairint, string` и значение `{2, "two"}`.

4. **`fmt.Printf("%T %v\n", p2, p2)`**:
* `%T` выводит тип переменной `p2`, который был выведен как `main.Pair string int`.
* `%v` выводит значение переменной `p2`, которое равно `{two 2}`.

5. **`fmt.Printf("%T %v\n", swapped, swapped)`**:
* `%T` выводит тип переменной `swapped`, который является результатом метода `Swap()` и равен `main.Pair int string`.
* `%v` выводит значение переменной `swapped`, которое равно `{2 two}`.

6. **`fmt.Printf("%T %v\n", m, m)`**:
* `%T` выводит тип переменной `m`, который является `main.Mapping string int`, что эквивалентно `mapstringint`.
* `%v` выводит значение переменной `m`, которое является картой `map["beta":2]`.

Таким образом, программа выведет тип и значение каждой из созданных и модифицированных переменных.
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/golangtests/766
Create:
Last Update:

👣 Что выйдет код ?

go 
package main

import "fmt"

// Пара обобщённого типа
type Pair[T any, U any] struct {
First T
Second U
}

// Метод, меняющий местами элементы
func (p Pair[T, U]) Swap() Pair[U, T] {
return Pair[U, T]{First: p.Second, Second: p.First}
}

// Карта обобщённого типа
type Mapping[K comparable, V any] map[K]V

func main() {
// явно указываем T=int, U=string
p1 := Pair[int, string]{First: 1, Second: "one"}

// начиная с Go 1.21 можно вывести параметры типа из литерала!
// здесь компилятор сам понимает, что T=string, U=int
p2 := Pair{"two", 2}

// аналогично для обобщённого alias-типа map
m := Mapping{"beta": 2}

// откатываем пару p2
swapped := p2.Swap()

fmt.Printf("%T %v\n", p2, p2)
fmt.Printf("%T %v\n", swapped, swapped)
fmt.Printf("%T %v\n", m, m)
}




Ответ: Код на Go 1.24 выведет следующее:

`main.Pair string int {two 2}`
`main.Pair int string {2 two}`
`main.Mapping string int map["beta":2]`

**Объяснение:**

1. **`p1 := Pairint, string{First: 1, Second: "one"}`** и **`p2 := Pair{"two", 2}`**:
* Создаются две переменные типа `Pair`.
* Для `p1` типы `T` (int) и `U` (string) указываются явно.
* Для `p2`, начиная с Go 1.21, компилятор автоматически выводит типы `T` (string) и `U` (int) из значений литерала `{"two", 2}`.

2. **`m := Mapping{"beta": 2}`**:
* Создается переменная `m` типа `Mapping`. `Mapping` является псевдонимом для `mapstringint`. Компилятор выводит типы ключа (string) и значения (int) из литерала `{"beta": 2}`.

3. **`swapped := p2.Swap()`**:
* Вызывается метод `Swap()` для `p2`. Метод `Swap()` возвращает новую структуру `Pair`, в которой типы `U` и `T` поменяны местами, а также значения полей `First` и `Second`. Таким образом, `swapped` будет иметь тип `Pairint, string` и значение `{2, "two"}`.

4. **`fmt.Printf("%T %v\n", p2, p2)`**:
* `%T` выводит тип переменной `p2`, который был выведен как `main.Pair string int`.
* `%v` выводит значение переменной `p2`, которое равно `{two 2}`.

5. **`fmt.Printf("%T %v\n", swapped, swapped)`**:
* `%T` выводит тип переменной `swapped`, который является результатом метода `Swap()` и равен `main.Pair int string`.
* `%v` выводит значение переменной `swapped`, которое равно `{2 two}`.

6. **`fmt.Printf("%T %v\n", m, m)`**:
* `%T` выводит тип переменной `m`, который является `main.Mapping string int`, что эквивалентно `mapstringint`.
* `%v` выводит значение переменной `m`, которое является картой `map["beta":2]`.

Таким образом, программа выведет тип и значение каждой из созданных и модифицированных переменных.

BY Go tests


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golangtests/766

View MORE
Open in Telegram


Go tests Telegram | DID YOU KNOW?

Date: |

The SSE was the first modern stock exchange to open in China, with trading commencing in 1990. It has now grown to become the largest stock exchange in Asia and the third-largest in the world by market capitalization, which stood at RMB 50.6 trillion (US$7.8 trillion) as of September 2021. Stocks (both A-shares and B-shares), bonds, funds, and derivatives are traded on the exchange. The SEE has two trading boards, the Main Board and the Science and Technology Innovation Board, the latter more commonly known as the STAR Market. The Main Board mainly hosts large, well-established Chinese companies and lists both A-shares and B-shares.

Should You Buy Bitcoin?

In general, many financial experts support their clients’ desire to buy cryptocurrency, but they don’t recommend it unless clients express interest. “The biggest concern for us is if someone wants to invest in crypto and the investment they choose doesn’t do well, and then all of a sudden they can’t send their kids to college,” says Ian Harvey, a certified financial planner (CFP) in New York City. “Then it wasn’t worth the risk.” The speculative nature of cryptocurrency leads some planners to recommend it for clients’ “side” investments. “Some call it a Vegas account,” says Scott Hammel, a CFP in Dallas. “Let’s keep this away from our real long-term perspective, make sure it doesn’t become too large a portion of your portfolio.” In a very real sense, Bitcoin is like a single stock, and advisors wouldn’t recommend putting a sizable part of your portfolio into any one company. At most, planners suggest putting no more than 1% to 10% into Bitcoin if you’re passionate about it. “If it was one stock, you would never allocate any significant portion of your portfolio to it,” Hammel says.

Go tests from sg


Telegram Go tests
FROM USA